Use standard mac shortcuts
authorYevgen Muntyan <muntyan@tamu.edu>
Sun, 25 Oct 2009 22:46:19 +0000 (23:46 +0100)
committerJavier Jardón <jjardon@gnome.org>
Sun, 25 Oct 2009 23:03:05 +0000 (00:03 +0100)
This changes Ctrl-X, Ctrl-C, etc. to Cmd-X, Cmd-C, etc. Also,
Alt-Left and Alt-Right in text widgets bound to Ctrl-Left and
Ctrl-Right actions

https://bugzilla.gnome.org/show_bug.cgi?id=530351

gtk/Makefile.am
gtk/gtkimcontextsimple.c
gtk/gtkprivate.h
gtk/gtksettings.c
gtk/gtkstock.c
gtk/gtktreeview.c

index 966cf1190991f5c2b32c7159cb5b62a6c9afa22a..f10bb19eb666ff3fc0e13f0442d51a9f1cd841bd 100644 (file)
@@ -915,8 +915,19 @@ if DISABLE_EXPLICIT_DEPS
        $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/$(gtktargetlib)
 endif
 
+if USE_QUARTZ
+install-mac-key-theme:
+       $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Mac/gtk-2.0-key
+       $(INSTALL_DATA) $(srcdir)/gtkrc.key.mac $(DESTDIR)$(datadir)/themes/Mac/gtk-2.0-key/gtkrc
+uninstall-mac-key-theme:
+       rm -f $(DESTDIR)$(datadir)/themes/Mac/gtk-2.0-key/gtkrc
+else
+install-mac-key-theme:
+uninstall-mac-key-theme:
+endif
+
 # Install a RC file for the default GTK+ theme, and key themes
-install-data-local: install-ms-lib install-def-file
+install-data-local: install-ms-lib install-def-file install-mac-key-theme
        $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Raleigh/gtk-2.0
        $(INSTALL_DATA) $(srcdir)/gtkrc.default $(DESTDIR)$(datadir)/themes/Raleigh/gtk-2.0/gtkrc
        $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key
@@ -924,7 +935,7 @@ install-data-local: install-ms-lib install-def-file
        $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key
        $(INSTALL_DATA) $(srcdir)/gtkrc.key.emacs $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key/gtkrc
 
-uninstall-local: uninstall-ms-lib uninstall-def-file
+uninstall-local: uninstall-ms-lib uninstall-def-file uninstall-mac-key-theme
        rm -f $(DESTDIR)$(datadir)/themes/Raleigh/gtk-2.0/gtkrc
        rm -f $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key/gtkrc
        rm -f $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key/gtkrc
@@ -1332,6 +1343,7 @@ EXTRA_DIST +=                   \
        gtkrc.default           \
        gtkrc.key.default       \
        gtkrc.key.emacs         \
+       gtkrc.key.mac           \
        makefile.msc            \
        makefile.msc.in         \
        makegtkalias.pl         \
index 62bab7c0c92137715ac525db43a5f601cfe9caba..5c636dadf452f195dab53948ffc6165a51354e4e 100644 (file)
@@ -22,6 +22,7 @@
 #include <string.h>
 
 #include <gdk/gdkkeysyms.h>
+#include "gtkprivate.h"
 #include "gtkaccelgroup.h"
 #include "gtkimcontextsimple.h"
 #include "gtksettings.h"
@@ -595,7 +596,7 @@ check_algorithmically (GtkIMContextSimple    *context_simple,
  * with Ctrl-Shift-U, then release the modifiers before typing any
  * digits, and enter the digits without modifiers.
  */
-#define HEX_MOD_MASK (GDK_CONTROL_MASK | GDK_SHIFT_MASK)
+#define HEX_MOD_MASK (GTK_DEFAULT_ACCEL_MOD_MASK | GDK_SHIFT_MASK)
 
 static gboolean
 check_hex (GtkIMContextSimple *context_simple,
index 5e51844c5b207e699e445f133c4589230239a49b..7ba5a5db624acda2b9d573a8cc2fbc9b7f5e3850 100644 (file)
@@ -103,6 +103,15 @@ gboolean _gtk_fnmatch (const char *pattern,
 #define GTK_PARAM_WRITABLE G_PARAM_WRITABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
 #define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
 
+/* Many keyboard shortcuts for Mac are the same as for X
+ * except they use Command key instead of Control (e.g. Cut,
+ * Copy, Paste). This symbol is for those simple cases. */
+#ifndef GDK_WINDOWING_QUARTZ
+#define GTK_DEFAULT_ACCEL_MOD_MASK GDK_CONTROL_MASK
+#else
+#define GTK_DEFAULT_ACCEL_MOD_MASK GDK_META_MASK
+#endif
+
 G_END_DECLS
 
 #endif /* __GTK_PRIVATE_H__ */
index 49172636ec6ebcd9905051708fe39a6ec5e79cd4..b83d95b2dc1f38d69caec5c17fe84d8fdcd44bf0 100644 (file)
 #include <pango/pangofc-fontmap.h>
 #endif
 
+#ifdef GDK_WINDOWING_QUARTZ
+#define DEFAULT_KEY_THEME "Mac"
+#else
+#define DEFAULT_KEY_THEME NULL
+#endif
+
 #define DEFAULT_TIMEOUT_INITIAL 200
 #define DEFAULT_TIMEOUT_REPEAT   20
 #define DEFAULT_TIMEOUT_EXPAND  500
@@ -310,7 +316,7 @@ gtk_settings_class_init (GtkSettingsClass *class)
                                              g_param_spec_string ("gtk-key-theme-name",
                                                                  P_("Key Theme Name"),
                                                                  P_("Name of key theme RC file to load"),
-                                                                 NULL,
+                                                                 DEFAULT_KEY_THEME,
                                                                  GTK_PARAM_READWRITE),
                                              NULL);
   g_assert (result == PROP_KEY_THEME_NAME);    
index 153ef0877cdc6bc5388c0b6d8c7be3ebe324175a..f896dec8f5d2d7c589cc2734a05e07de0656f111 100644 (file)
@@ -27,6 +27,7 @@
 #include "config.h"
 #include <string.h>
 
+#include "gtkprivate.h"
 #include "gtkstock.h"
 #include "gtkiconfactory.h"
 #include "gtkintl.h"
index a0fdf330727050db21deee4795aceac43abd6b5d..3aad46cd4493e57ab2c0cdc433c3be7aa02c2507 100644 (file)
@@ -14326,7 +14326,7 @@ gtk_tree_view_search_key_press_event (GtkWidget *widget,
       retval = TRUE;
     }
 
-  if (((event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK | GDK_SHIFT_MASK))
+  if (((event->state & (GTK_DEFAULT_ACCEL_MOD_MASK | GDK_SHIFT_MASK)) == (GTK_DEFAULT_ACCEL_MOD_MASK | GDK_SHIFT_MASK))
       && (event->keyval == GDK_g || event->keyval == GDK_G))
     {
       if (!gtk_tree_view_search_move (widget, tree_view, TRUE))
@@ -14344,7 +14344,7 @@ gtk_tree_view_search_key_press_event (GtkWidget *widget,
       retval = TRUE;
     }
 
-  if (((event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == GDK_CONTROL_MASK)
+  if (((event->state & (GTK_DEFAULT_ACCEL_MOD_MASK | GDK_SHIFT_MASK)) == GTK_DEFAULT_ACCEL_MOD_MASK)
       && (event->keyval == GDK_g || event->keyval == GDK_G))
     {
       if (!gtk_tree_view_search_move (widget, tree_view, FALSE))